home *** CD-ROM | disk | FTP | other *** search
- /* create an array of prime numbers */
-
- #include "defs.h"
-
- int* am_primes_array(int starting_prime,int primes_wanted)
- {
- int n = 0,y=0,a[2];
- int* feld = 0,x=0;
-
- if((feld = (int*)malloc((primes_wanted+1) * sizeof(int)))==NULL)
- return feld;
-
- if(primes_wanted<0)
- primes_wanted = -primes_wanted;
-
- if(starting_prime<0){
- starting_prime = -starting_prime;
-
- x=starting_prime%6;
-
- if(starting_prime<5){
- if(starting_prime<3){
- feld[0]=-2;
- feld[1]=-3;
- n=2;
- }
- else if(starting_prime==3){
- feld[0]=-3;
- n=1;
- }
- x=5;
- a[0]=2;
- a[1]=4;
- }
- else if(x==1){
- x=starting_prime;
- a[0]=4;
- a[1]=2;
- n = 0;
- }
- else if(x==5){
- x=starting_prime;
- a[0]=2;
- a[1]=4;
- n = 0;
- }
- else if (x==0){
- x=starting_prime+1;
- a[0]=4;
- a[1]=2;
- n = 0;
- }
- else {
- x=starting_prime+5-x;
- a[0]=2;
- a[1]=4;
- n = 0;
- }
-
-
- while(n < primes_wanted)
- {
- if(am_isprime(x))
- feld[n++] = -x;
- x=x+a[y];
- y++;
- if(y>1)
- y=0;
- }
- feld[n]=0;
- }
- else{
- x=starting_prime%6;
-
- if(starting_prime<5){
- if(starting_prime<3){
- feld[0]=2;
- feld[1]=3;
- n=2;
- }
- else if(starting_prime==3){
- feld[0]=3;
- n=1;
- }
- x=5;
- a[0]=2;
- a[1]=4;
- }
- else if(x==1){
- x=starting_prime;
- a[0]=4;
- a[1]=2;
- n = 0;
- }
- else if(x==5){
- x=starting_prime;
- a[0]=2;
- a[1]=4;
- n = 0;
- }
- else if (x==0){
- x=starting_prime+1;
- a[0]=4;
- a[1]=2;
- n = 0;
- }
- else {
- x=starting_prime+5-x;
- a[0]=2;
- a[1]=4;
- n = 0;
- }
-
-
- while(n < primes_wanted)
- {
- if(am_isprime(x))
- feld[n++] = x;
- x=x+a[y];
- y++;
- if(y>1)
- y=0;
- }
- feld[n]=0;
- }
- return feld;
- }
-